WarLord (Console) is a command-line utility for dumping and inserting maps from Nintendo/Intelligent System's Gameboy Advance game "Advance Wars 2: Blackhole Rising". Maps are dumped to a custom XML format, which can then be edited and re-inserted into a ROM.
This program has been written in C# and requires the .NET Framework 2.0. If you do not have it, you will need to download it to use this program.
This section details the XML File Format used for storing maps. These files can be edited and then re-inserted into a ROM.
All files begin with an XML declaration and have "awMap" as their root node:
Data is segmented into containers. All containers are optional, but must appear in the following order:
ref elements are special, in that they are the only element that can appear more than once. They create a reference to another awMap XML file. This file should contain alias definitions and unit templates - all other data (tileMaps, unit lists, etc...) will be ignored by the parser.
File paths are relative to the current XML file. The following creates a reference to "aliases.xml", located in the same directory.
This container is used for storing information that is not inserted into a ROM, such as map titles and descriptions (these are distinct from in-game text such as map titles, which are not currently supported).
The following tags can be used (all are optional):
Aliases are used to simplify editing of awMap files. They comprise two parts: a key, and a value. In certain areas of an awMap file, the text in a value can be substituted with it's key. For example, tile data is usually made up of rows of tile identifiers - the hexadecimal values that are used by the game. These aren't very useful when it comes to editing, as you need to know what type of tile each ID represents. If an alias is defined for a tile, the key specified in the alias definition can be used instead.
Aliases are not restricted to just tiles, but can be used in the following areas (periods denote addresses, a forward slash a parent-child relationship):
Note: If an alias can be used in a field of a unit definition, it is also valid to use it in the corresponding field of a unit template.
Aliases must be defined within 'domain' containers. The name attribute of the container is used to determine the scope of an alias:
For example, aliases within a <domain name="type"> container will only be recognised within a <type> tag.
There is also limited support for using aliases when dumping maps. If a reference file is specified when dumping a map via "--ref=", then any aliases in it will automatically be enforced within the file.
This container holds actual map data and associated information.
address: Required, hexadecimal. Specifies where the data should
be placed in ROM (can be overridden from the command line).
width: Required, decimal. Width of the map in tiles.
height: Required, decimal. Height of the map in tiles.
A tileMap container should hold n <row> elements, where n = height of the map. A row element contains the 16-bit, hexadecimal tile identifiers that represents the raw tile data. Each tile should be separated by a space. Tile identifiers can be aliased.